package com.youka.bussiness.common.utils;

import com.alibaba.fastjson.JSON;

import java.util.Collection;
import java.util.Collections;
import java.util.List;

public class CollectionUtils {
    /**
     * 判断一个集合对象是否为null或为空
     *
     * @param collection 要检测的集合对象
     * @return 若集合对象为null或为空，则返回true；否则返回false
     */
    public static boolean isEmpty(Collection<?> collection) {
        return collection == null || collection.isEmpty();
    }

    /**
     * 判断一个集合对象是否不为null且不为空
     *
     * @param collection 要检测的集合对象
     * @return 若集合对象不为null且不为空，则返回true；否则返回false
     */
    public static boolean isNotEmpty(Collection<?> collection) {
        return !CollectionUtils.isEmpty(collection);
    }

    /**
     * 得到集合的第一个元素
     *
     * @param <T>        泛型
     * @param collection 集合
     * @return 集合的第一个元素，若集合为null，则返回null
     */
    public static <T> T getFirst(Collection<T> collection) {
        return isEmpty(collection) ? null
                : collection.iterator().next();
    }

    public static <T, S> List<T> convert(Collection<S> srcList, Class<T> targetClazz) {
        if (CollectionUtils.isEmpty(srcList)) {
            return Collections.emptyList();
        }
        try {
            return JSON.parseArray(JSON.toJSONString(srcList), targetClazz);
        } catch (Exception e) {
            throw new IllegalArgumentException("对象" + targetClazz.getSimpleName() + "复制属性出错", e);
        }
    }

}
